/**
 * Add at 2018年2月28日
 * 
 * 文档: 
 *      + http://eventproxy.html5ify.com/
 *      + https://github.com/JacksonTian/eventproxy
 * 
 */

// EventProxy此时是一个全局变量
var ep = new EventProxy();

/**
 * (1) ep.all, ep.emit
 */
var func01 = (function () {
    var innerFunc = function () {
        var arr01 = [], arr02 = [];
        ep.all('aa', 'bb', function (aa, bb) {
            // 在所有指定的事件触发后，将会被调用执行
            // 参数对应各自的事件名
            console.log(aa);
            console.log(arr01.join(','));
            console.log(bb);
            console.log(arr02.join(', '));
        });
        function aa() {
            for (var i = 1; i <= 10; i++) {
                arr01.push('aa' + i);
            }
            ep.emit('aa', "aa is done...");
        }
        function bb() {
            for (var j = 1; j <= 10; j++) {
                arr02.push('bb' + j);
            }
            setTimeout(function () {
                ep.emit('bb', "bb is done...(setTimeout 1000ms)");
            }, 1000);
        }
        aa();
        bb();
    };

    return innerFunc;
})();

/**
 * all, emit
 * `EventProxy.create` : EventProxy提供了create静态方法，可以快速完成注册all事件。
 */
var func02 = (function () {
    var innerFunc = function () {
        var arr01 = [], arr02 = [];
        var _ep = EventProxy.create('cc', 'dd', function (aa, bb) {
            // 在所有指定的事件触发后，将会被调用执行
            // 参数对应各自的事件名
            console.log(aa);
            console.log(arr01.join(','));
            console.log(bb);
            console.log(arr02.join(', '));
        });
        function aa() {
            for (var i = 1; i <= 10; i++) {
                arr01.push('cc' + i);
            }
            _ep.emit('cc', "cc is done...");
        }
        function bb() {
            for (var j = 1; j <= 10; j++) {
                arr02.push('dd' + j);
            }
            setTimeout(function () {
                _ep.emit('dd', "dd is done...(setTimeout 100ms)");
            }, 100);
        }
        aa();
        bb();
    };

    return innerFunc;
})();


func01();

func02();
